package com.qf.controller;

import com.qf.pojo.Cart;
import com.qf.pojo.User;
import com.qf.service.CartService;
import com.qf.service.impl.CartServiceImpl;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author 29125
 * @version V1.0
 * @Project java2203
 * @Package com.qf.controller
 * @Description:购物车管理，创建/查询/修改/删除操作
 * @Date 2022/5/25 10:10
 */
@WebServlet("/cart")
public class CartController extends BaseServlet {
    //创建购物车
    public String create(HttpServletRequest request, HttpServletResponse response){
        //获取商品id
        String pid = request.getParameter("pid");
        //获取session会话中当前用户的用户id
        User user = (User) request.getSession().getAttribute("loginUser");
        if (user==null){
            //获取不到用户，跳转到登录页面
            return "redirect:/login.jsp";
        }
        //调用service层，将购物车存入到数据库中
        //创建service层和dao层
        CartService cartService=new CartServiceImpl();
        cartService.createCart(user.getId(),Integer.parseInt(pid));

        //跳转到购物车查询列表方法
        return "redirect:/cart?method=show";
    }

    //查询购物车并展示页面
    public String show(HttpServletRequest request,HttpServletResponse response){
        //获取session会话中当前用户的id
        User user = (User) request.getSession().getAttribute("loginUser");
        if (user==null){
            //获取id为空，重定向到登录页面
            return "redirect:/login.jsp";
        }

        //根据用户id调用service层查询改购物车数据
        //创建CartService和CartServiceImpl  以及dao层
        CartService cartService=new CartServiceImpl();
        List<Cart> cartList=cartService.findCartListByUid(user.getId());

        //将用户购物车的数据放入request域中，带到页面中进行展示
        request.setAttribute("list",cartList);
        //携带数据跳转到购物车列表页面展示
        return "forward:/cart.jsp";
    }

    //修改购物车
    public String update(HttpServletRequest request,HttpServletResponse response){
        //从session会话中获取当前登录用户的id
        User user = (User) request.getSession().getAttribute("loginUser");
        if (user==null){
            //如果获取不到或为空，重定向到登录页面，重新登录
            return "redirect:/login.jsp";
        }
        //获取购物车里商品的id
        String cid = request.getParameter("cid");
        //获取购物车中的商品数量
        String cnum = request.getParameter("cnum");

        //调用service层的修改方法    创建service层和dao层
        CartService cartService=new CartServiceImpl();
        cartService.updateCart(Integer.parseInt(cid),Integer.parseInt(cnum));

        //修改完毕跳转到购物车详情页面
        return "redirect:/cart?method=show";//cart路径的servlet中的show方法中
    }

    //删除购物车中的内容，根据id
    public String delete(HttpServletRequest request,HttpServletResponse response){
        //从session中获取用户
        User user = (User) request.getSession().getAttribute("loginUser");
        if (user==null){
            return "redirect:/login.jsp";
        }
        //获取购物车里商品的id
        String cid = request.getParameter("cid");
        //获取购物车中的商品数量
        String cnum = request.getParameter("cnum");

        //调用service层的删除方法    创建service层和dao层
        CartService cartService=new CartServiceImpl();
        cartService.deleteById(Integer.parseInt(cid));

        //删除该id的商品完毕跳转到购物车详情页面
        return "redirect:/cart?method=show";//cart路径的servlet中的show方法中
    }

    //清空购物车

}
